1 module directx.dxgitype;
2 //
3 //    Copyright (C) Microsoft.  All rights reserved.
4 //
5 
6 version(Windows):
7 
8 public import directx.dxgiformat;
9 
10 import directx.win32;
11 import directx.d3dcommon;
12 
13 enum _FACDXGI   = 0x87a;
14 
15 HRESULT MAKE_DXGI_HRESULT(T)(T code) {
16 	return MAKE_HRESULT(1, _FACDXGI, code);
17 }
18 
19 HRESULT MAKE_DXGI_STATUS(T)(T code) {
20 	return MAKE_HRESULT(0, _FACDXGI, code);
21 }
22 
23 // DXGI error messages have moved to winerror.h
24 enum DXGI_STATUS_OCCLUDED                   = MAKE_DXGI_STATUS(1);
25 enum DXGI_STATUS_CLIPPED                    = MAKE_DXGI_STATUS(2);
26 enum DXGI_STATUS_NO_REDIRECTION             = MAKE_DXGI_STATUS(4);
27 enum DXGI_STATUS_NO_DESKTOP_ACCESS          = MAKE_DXGI_STATUS(5);
28 enum DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE = MAKE_DXGI_STATUS(6);
29 enum DXGI_STATUS_MODE_CHANGED               = MAKE_DXGI_STATUS(7);
30 enum DXGI_STATUS_MODE_CHANGE_IN_PROGRESS    = MAKE_DXGI_STATUS(8);
31 
32 enum DXGI_ERROR_INVALID_CALL                = MAKE_DXGI_HRESULT(1);
33 enum DXGI_ERROR_NOT_FOUND                   = MAKE_DXGI_HRESULT(2);
34 enum DXGI_ERROR_MORE_DATA                   = MAKE_DXGI_HRESULT(3);
35 enum DXGI_ERROR_UNSUPPORTED                 = MAKE_DXGI_HRESULT(4);
36 enum DXGI_ERROR_DEVICE_REMOVED              = MAKE_DXGI_HRESULT(5);
37 enum DXGI_ERROR_DEVICE_HUNG                 = MAKE_DXGI_HRESULT(6);
38 enum DXGI_ERROR_DEVICE_RESET                = MAKE_DXGI_HRESULT(7);
39 enum DXGI_ERROR_WAS_STILL_DRAWING           = MAKE_DXGI_HRESULT(10);
40 enum DXGI_ERROR_FRAME_STATISTICS_DISJOINT   = MAKE_DXGI_HRESULT(11);
41 enum DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE = MAKE_DXGI_HRESULT(12);
42 enum DXGI_ERROR_DRIVER_INTERNAL_ERROR       = MAKE_DXGI_HRESULT(32);
43 enum DXGI_ERROR_NONEXCLUSIVE                = MAKE_DXGI_HRESULT(33);
44 enum DXGI_ERROR_NOT_CURRENTLY_AVAILABLE     = MAKE_DXGI_HRESULT(34);
45 enum DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED  = MAKE_DXGI_HRESULT(35);
46 enum DXGI_ERROR_REMOTE_OUTOFMEMORY          = MAKE_DXGI_HRESULT(36);
47 
48 struct DXGI_RGB
49 {
50     float Red;
51     float Green;
52     float Blue;
53 }
54 
55 struct DXGI_RGBA {
56     float r;
57     float g;
58     float b;
59     float a;
60 }
61 
62 struct DXGI_GAMMA_CONTROL
63 {
64     DXGI_RGB Scale;
65     DXGI_RGB Offset;
66     DXGI_RGB[ 1025 ] GammaCurve;
67 }
68 
69 struct DXGI_GAMMA_CONTROL_CAPABILITIES
70 {
71     int ScaleAndOffsetSupported;
72     float MaxConvertedValue;
73     float MinConvertedValue;
74     uint NumGammaControlPoints;
75     float[1025] ControlPointPositions;
76 }
77 
78 struct DXGI_RATIONAL
79 {
80     uint Numerator;
81     uint Denominator;
82 }
83 
84 alias DXGI_MODE_SCANLINE_ORDER = int;
85 enum : DXGI_MODE_SCANLINE_ORDER
86 {
87     DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED        = 0,
88     DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE        = 1,
89     DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST  = 2,
90     DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST  = 3
91 }
92 
93 alias DXGI_MODE_SCALING = int;
94 enum : DXGI_MODE_SCALING
95 {
96     DXGI_MODE_SCALING_UNSPECIFIED   = 0,
97     DXGI_MODE_SCALING_CENTERED      = 1,
98     DXGI_MODE_SCALING_STRETCHED     = 2
99 }
100 
101 alias DXGI_MODE_ROTATION = int;
102 enum : DXGI_MODE_ROTATION
103 {
104     DXGI_MODE_ROTATION_UNSPECIFIED  = 0,
105     DXGI_MODE_ROTATION_IDENTITY     = 1,
106     DXGI_MODE_ROTATION_ROTATE90     = 2,
107     DXGI_MODE_ROTATION_ROTATE180    = 3,
108     DXGI_MODE_ROTATION_ROTATE270    = 4
109 }
110 
111 struct DXGI_MODE_DESC
112 {
113     uint Width;
114     uint Height;
115     DXGI_RATIONAL RefreshRate;
116     DXGI_FORMAT Format;
117     DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
118     DXGI_MODE_SCALING Scaling;
119 }
120 
121 // The following values are used with DXGI_SAMPLE_DESC::Quality:
122 enum DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN = 0xffffffff;
123 enum DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN   = 0xfffffffe;
124 
125 struct DXGI_SAMPLE_DESC
126 {
127     uint Count;
128     uint Quality;
129 }
130 
131 alias DWORD DXGI_COLOR_SPACE_TYPE;
132 enum : DXGI_COLOR_SPACE_TYPE
133 {
134     DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709             = 0,
135     DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709             = 1,
136     DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709           = 2,
137     DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020          = 3,
138     DXGI_COLOR_SPACE_RESERVED                           = 4,
139     DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601      = 5,
140     DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601         = 6,
141     DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601           = 7,
142     DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709         = 8,
143     DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709           = 9,
144     DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020        = 10,
145     DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020          = 11,
146     DXGI_COLOR_SPACE_CUSTOM                             = 0xFFFFFFFF
147 }
148 
149 struct DXGI_JPEG_DC_HUFFMAN_TABLE
150 {
151     BYTE[12] CodeCounts;
152     BYTE[12] CodeValues;
153 }
154 
155 struct DXGI_JPEG_AC_HUFFMAN_TABLE
156 {
157     BYTE[16] CodeCounts;
158     BYTE[162] CodeValues;
159 }
160 
161 struct DXGI_JPEG_QUANTIZATION_TABLE
162 {
163     BYTE[64] Elements;
164 }